package com.atguigu.servlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
@WebServlet(value = "/lifeCycle", loadOnStartup = 6)
public class ServletLifeCycle extends HttpServlet {
    // servlet在tomcat中是单例的
    // servlet的成员变量在多个线程之间是共享的
    // 强烈不建议在service方法中修改成员变量 在并发请求时容易出现线程安全问题,加锁容易降低性能
    public ServletLifeCycle() {
        // 一定是public,别问为什么知道
        // 第一次请求时执行
        System.out.println("构造器");
    }

    @Override
    public void init() throws ServletException {
        // 构造完毕时执行
        System.out.println("init");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 每次请求时执行
        System.out.println("service");
    }

    @Override
    public void destroy() {
        // 关闭服务时执行
        System.out.println("destroy");
    }
}
